package org.example.aigc.service;

import org.springframework.stereotype.Service;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;

@Service
public interface ModelService {

    /**
     * 向服务器发送请求，设置语音克隆的模型
     *
     * @param referWav  参考音频文件名
     * @param referText 参考音频的内容
     */
    void setModel(String referWav, String referText);

    /**
     * 向服务器发送请求，生成克隆后的音频
     *
     * @param content 要说的话
     * @return 返回生成的文件名
     */
    CompletableFuture<String> getWav(String content) throws FileNotFoundException;

    /**
     * 生成长视频
     *
     * @param appearanceName 虚拟形象的视频文件名
     * @param wavName        长音频的文件名
     * @return 返回生成的长视频文件名
     */
    String getMP4(String appearanceName, String wavName) throws IOException;

    void uploadFile(String fileName, int isWav, int isGenWav);
}
